<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      /*
       * try cach finllay
       */

      /*
                 1、代码报错的时候，线程执行未进入 try catch，那么无法捕捉异常。
                 比如语法异常（syntaxError），因为语法异常是在语法检查阶段就报错了，线程执行尚未进入 try catch 代码块，自然就无法捕获到异常。

                    try{
                     a.
                   }catch(e){
                     console.log('error',e)
                   }
                 */

      /*
                 2、代码报错的时候，线程执行处于 try catch 之中，则能捕捉到异常。
                    try {
                   function d() {
                     a.b;
                   }
                   d();
                 } catch (e) {
                   console.log("error", e);
                 }

                 */

      /*  try {
                   setTimeout(() => {
                     console.log(a.b);
                   }, 100);
                 } catch (e) {
                   console.log("error", e);
                 }
            */
      /*
                 能被 try catch 捕捉到的异常，必须是在报错的时候，线程执行已经进入 try catch 代码块，且处在 try catch 里面，这个时候才能被捕捉到。 */
      async function a() {
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            reject(1);
          }, 1000); // Added a delay for demonstration purposes
        });
      }

      async function main() {
        try {
          await a();
        } catch (e) {
          console.log("error", e);
        }
        console.log(111);
      }

      main();
    </script>
  </body>
</html>
